Seleção (σ) |
σcondição(R) |
SELECT * FROM R WHERE condição |
Filtra tuplas que satisfazem uma condição |
condição : condição de filtragem R : relação (tabela) |
σidade > 30(Clientes) |
SELECT * FROM Clientes WHERE idade > 30; |
Projeção (π) |
πatributos(R) |
SELECT atributos FROM R |
Retorna colunas específicas, eliminando duplicatas |
atributos : colunas a selecionar R : relação (tabela) |
πnome, idade(Clientes) |
SELECT DISTINCT nome, idade FROM Clientes; |
Renomeação (ρ) |
ρnovo_nome(R) |
SELECT * FROM R AS novo_nome |
Renomeia a relação ou seus atributos |
novo_nome : novo nome para a relação R : relação original |
ρC(Clientes) |
SELECT * FROM Clientes AS C; |
União (⋃) |
R ⋃ S |
SELECT * FROM R UNION SELECT * FROM S |
Combina tuplas de duas relações, eliminando duplicatas |
R : primeira relação S : segunda relação (mesma estrutura) |
ClientesBrasil ⋃ ClientesEUA |
SELECT * FROM ClientesBrasil UNION SELECT * FROM ClientesEUA; |
Interseção (∩) |
R ∩ S |
SELECT * FROM R INTERSECT SELECT * FROM S |
Retorna tuplas que estão em ambas as relações |
R : primeira relação S : segunda relação (mesma estrutura) |
ClientesBrasil ∩ ClientesEUA |
SELECT * FROM ClientesBrasil INTERSECT SELECT * FROM ClientesEUA; |
Diferença (−) |
R − S |
SELECT * FROM R EXCEPT SELECT * FROM S |
Retorna tuplas de R que não estão em S |
R : primeira relação S : segunda relação (mesma estrutura) |
ClientesBrasil − ClientesEUA |
SELECT * FROM ClientesBrasil EXCEPT SELECT * FROM ClientesEUA; |
Produto Cartesiano (×) |
R × S |
SELECT * FROM R, S |
Combina todas as tuplas de R com todas as de S |
R : primeira relação S : segunda relação |
Clientes × Pedidos |
SELECT * FROM Clientes, Pedidos; |
Junção Natural (⨝) |
R ⨝ S |
SELECT * FROM R NATURAL JOIN S |
Combina tuplas de R e S com base em atributos comuns |
R : primeira relação S : segunda relação |
Clientes ⨝ Pedidos |
SELECT * FROM Clientes NATURAL JOIN Pedidos; |
Junção Theta (⨝θ) |
R ⨝θ S |
SELECT * FROM R JOIN S ON θ |
Combina tuplas de R e S com uma condição específica |
R : primeira relação S : segunda relação θ : condição de junção |
Clientes ⨝Clientes.cidade = Pedidos.cidade Pedidos |
SELECT * FROM Clientes JOIN Pedidos ON Clientes.cidade = Pedidos.cidade; |
Junção Externa Esquerda (⟕) |
R ⟕ S |
SELECT * FROM R LEFT JOIN S ON condição |
Retorna todas as tuplas de R e tuplas de S que têm correspondência |
R : primeira relação S : segunda relação condição : condição de junção |
Clientes ⟕ Pedidos |
SELECT * FROM Clientes LEFT JOIN Pedidos ON Clientes.id = Pedidos.cliente_id; |
Junção Externa Direita (⟖) |
R ⟖ S |
SELECT * FROM R RIGHT JOIN S ON condição |
Retorna todas as tuplas de S e tuplas de R que têm correspondência |
R : primeira relação S : segunda relação condição : condição de junção |
Clientes ⟖ Pedidos |
SELECT * FROM Clientes RIGHT JOIN Pedidos ON Clientes.id = Pedidos.cliente_id; |
Junção Externa Completa (⟗) |
R ⟗ S |
SELECT * FROM R FULL JOIN S ON condição |
Retorna todas as tuplas de R e S , correspondentes ou não |
R : primeira relação S : segunda relação condição : condição de junção |
Clientes ⟗ Pedidos |
SELECT * FROM Clientes FULL JOIN Pedidos ON Clientes.id = Pedidos.cliente_id; |
Divisão (÷) |
R ÷ S |
(Não tem equivalente direto) |
Retorna tuplas de R associadas a todas as de S |
R : relação com tuplas para dividir S : relação com valores associados |
ClientesProdutos ÷ ProdutosVendidos |
SELECT cliente_id FROM Clientes WHERE NOT EXISTS (SELECT 1 FROM Produtos WHERE Produtos.produto_id NOT IN (SELECT produto_id FROM Compras WHERE ...)) |
Ordenação (τ) |
τatributos(R) |
SELECT * FROM R ORDER BY atributos |
Ordena as tuplas da relação com base nos atributos especificados |
atributos : colunas a ordenar R : relação (tabela) |
τidade DESC(Clientes) |
SELECT * FROM Clientes ORDER BY idade DESC; |
Agrupamento (γ) |
γatributos; função_agregada(R) |
SELECT atributos, função_agregada FROM R GROUP BY atributos |
Agrupa tuplas e aplica funções agregadas |
atributos : colunas para agrupar função_agregada : função aplicada aos grupos R : relação (tabela) |
γcidade; COUNT(*); AVG(idade)(Clientes) |
SELECT cidade, COUNT(*), AVG(idade) FROM Clientes GROUP BY cidade; |